﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2022 北京超维景生物科技有限公司 保留所有权利。
 * 
 * 创建者：huangyang
 * 电子邮箱：huangyang@tvscope.cn
 * 创建时间：2023/2/16 14:12:18
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImageK.Process
{
    /// <summary>
    /// ImageJ bit blitting classes must implement this interface.
    /// </summary>
    public interface Blitter
    {
        /** dst=src */
        public const int COPY = 0;
        /** dst=255-src (8-bits and RGB) */
        public const int COPY_INVERTED = 1;

        /** Copies with white pixels transparent. */
        public const int COPY_TRANSPARENT = 2;

        /** dst=dst+src */
        public const int ADD = 3;

        /** dst=dst-src */
        public const int SUBTRACT = 4;

        /** dst=src*src */
        public const int MULTIPLY = 5;

        /** dst=dst/src */
        public const int DIVIDE = 6;

        /** dst=(dst+src)/2 */
        public const int AVERAGE = 7;

        /** dst=abs(dst-src) */
        public const int DIFFERENCE = 8;

        /** dst=dst AND src */
        public const int AND = 9;

        /** dst=dst OR src */
        public const int OR = 10;

        /** dst=dst XOR src */
        public const int XOR = 11;

        /** dst=min(dst,src) */
        public const int MIN = 12;

        /** dst=max(dst,src) */
        public const int MAX = 13;

        /** Copies with zero pixels transparent. */
        public const int COPY_ZERO_TRANSPARENT = 14;


        /** Sets the transparent color used in the COPY_TRANSPARENT
        mode (default is Color.white). */
        public void setTransparentColor(Color c);

        /** Copies the image in 'src' to (x,y) using the specified mode. */
        public void copyBits(ImageProcessor src, int x, int y, int mode);
    }
}
